package zclients

import (
	"go.didapinche.com/goapi/uic_service_api"
	"go.didapinche.com/zeus-go/v2"
	"go.didapinche.com/zeus-go/v2/client"
)

func NewUicService(z *zeus.Zeus) (uic_service_api.TChanUicService, error) {
	c, err := client.New(z, "UicService")
	if err != nil {
		//return nil, errors.Wrap(err, "create zeus UicService error")
		return nil, nil
	}

	tc := uic_service_api.NewTChanUicServiceClient(c)

	return tc, nil
}

//
////获得一个groupID的所有子groupID包含自己
//func GetNodeIDs(ctx context.Context, uic uic_service_api.TChanUicService, groupID string) ([]string, error) {
//	ctx2, _ := context.WithTimeout(ctx, 5*time.Second)
//	node, err := uic.FindGroupsOfDevelopment(thrift.Wrap(ctx2))
//	if err != nil {
//		return nil, errors.Wrap(err, "call uicService.FindGroupsOfDevelopment error")
//	}
//	node = GetMapByNode(node, groupID)
//	m := GetNodeIDMap(node)
//	nodeIDs := make([]string, 0)
//	for k, _ := range m {
//		nodeIDs = append(nodeIDs, k)
//	}
//	return nodeIDs, nil
//}
//
////找到对应node的所有NodeID
//func GetNodeIDMap(node *uic_service_api.Node) map[string]int {
//	if node == nil {
//		return nil
//	}
//	nodeIDs := make(map[string]int, 0)
//	nodeIDs[node.ID] = 0
//	for _, n := range node.Nodes {
//		for k, _ := range GetNodeIDMap(n) {
//			nodeIDs[k] = 0
//		}
//	}
//	return nodeIDs
//}
//
////找到nodeId:nodeName的结构
//func GetNodeNameMap(node *uic_service_api.Node) map[string]string {
//	if node == nil {
//		return nil
//	}
//	nodeIDs := make(map[string]string, 0)
//	nodeIDs[node.ID] = node.Name
//	for _, n := range node.Nodes {
//		nodeIDs1 := GetNodeNameMap(n)
//		if nodeIDs1 != nil {
//			for k, v := range nodeIDs1 {
//				nodeIDs[k] = v
//			}
//		}
//	}
//	return nodeIDs
//}
//
////找到对应greouID的node
//func GetMapByNode(node *uic_service_api.Node, groupID string) *uic_service_api.Node {
//	if node == nil {
//		return nil
//	}
//	if node.ID == groupID {
//		return node
//	}
//	for _, n := range node.Nodes {
//		node2 := GetMapByNode(n, groupID)
//		if node2 != nil {
//			return node2
//		}
//	}
//	return nil
//}
//
////找到node最深层级
//func GetNodeLevel(node *uic_service_api.Node, i int) int {
//	if node == nil {
//		return i
//	}
//	if len(node.Nodes) == 0 {
//		return i
//	}
//	arr := make([]int, 0)
//	i++
//	for _, n := range node.Nodes {
//		arr = append(arr, GetNodeLevel(n, i))
//	}
//	var max int
//	for _, val := range arr {
//		if val > max {
//			max = val
//		}
//	}
//	return max
//}
//
////获得子对应父的层级关系(部门名字)
//func GetMap(node *uic_service_api.Node) map[string]string {
//	tmpMap := make(map[string]*uic_service_api.Node, 0)
//	result := make(map[string]string)
//	//每层节点
//	tmpSlice := make([]string, 0)
//
//	tmpSlice = append(tmpSlice, node.Name)
//	tmpMap[node.Name] = node
//	result[node.Name] = ""
//
//	for len(tmpSlice) != 0 {
//		tmp := make([]string, 0)
//		for _, tmpNodeID := range tmpSlice {
//			nodes := tmpMap[tmpNodeID].Nodes
//			if nil != nodes && len(nodes) > 0 {
//				for _, tmpNode := range nodes {
//					tmp = append(tmp, tmpNode.Name)
//					tmpMap[tmpNode.Name] = tmpNode
//					result[tmpNode.Name] = tmpNodeID
//				}
//			}
//		}
//		tmpSlice = tmp
//	}
//
//	return result
//}
//
////获得子对应父的层级关系(部门名字Id)
//func GetMapID(node *uic_service_api.Node) map[string]string {
//	tmpMap := make(map[string]*uic_service_api.Node, 0)
//	result := make(map[string]string)
//	//每层节点
//	tmpSlice := make([]string, 0)
//
//	tmpSlice = append(tmpSlice, node.ID)
//	tmpMap[node.ID] = node
//	result[node.ID] = ""
//
//	for len(tmpSlice) != 0 {
//		tmp := make([]string, 0)
//		for _, tmpNodeID := range tmpSlice {
//			nodes := tmpMap[tmpNodeID].Nodes
//			if nil != nodes && len(nodes) > 0 {
//				for _, tmpNode := range nodes {
//					tmp = append(tmp, tmpNode.ID)
//					tmpMap[tmpNode.ID] = tmpNode
//					result[tmpNode.ID] = tmpNodeID
//				}
//			}
//		}
//		tmpSlice = tmp
//	}
//
//	return result
//}
